#ifndef _USB_SERIAL_DOWNLOAD_H
#define _USB_SERIAL_DOWNLOAD_H

#define USBCOMMANDLEN        4
#define USBDATASIZELEN        2
//#define USBDATAMAXLEN        64
//#define FLASH_SIZE_128M
#define USBRESPONSELEN        (USBCOMMANDLEN)

//int udownload_cmd(u32 *destAddress, u32 bufLen);

enum UsbCommandType
{
    UsbShakehand = 'a',
    UsbClientReceive,
    UsbClientSend,
    UsbClientResponse,
    UsbClientError,
    UsbClientFlash,

    UsbExit,

    UsbCommandMax
};

enum UsbResponseType
{
    UsbResponseOK = 'A',
    UsbResponseError,
    UsbResponseAgain,

    UsbResponseShakehand,
    UsbResponseExit,
    UsbResponseFlash,
};

enum FlashImageType
{
    FlashImageTypeBootLoader = '0',
    FlashImageTypeIplSpl,
    FlashImageTypeKernel,
    FlashImageTypeRootFS,
    FlashImageTypeProgramFS,
    FlashImageTypeUserFS,
    FlashImageTypeUserLocalFS,
    FlashImageTypePTable,
    FlashImageTypeInitImage,
    FlashImageTypeUIPackage,
  FlashImageTypeFactory,
  FlashImageTypeGSMModule,
    FlashImageTypeDspPatch,
    FlashImageTypeSysParmInd,
    FlashImageTypeSysParmDep,
    FlashImageBootloader_FormatDoc,
    FlashImageTypeMax
};


int UsbDownloadImage( void );

#endif
